PEFT

Intro

PEFT – "Parameter-Efficient Fine-Tuning" – 参数高效微调

关键思想

核心

通过只调整模型中一小部分参数的方式,来适应新的任务或数据集,从而 –> 显著降低了计算和存储成本

  • 参数效率
    • 与传统的微调 SFT 相比,PEFT只需优化模型的一小部分参数(例如,只调整1%的参数),就能在新任务上达到接近全模型微调的效果
  • 资源节约
    • 由于减少了需要调整的参数数量,PEFT大大减少了计算资源和存储空间的需求,使得在资源受限的环境中微调大型模型成为可能
  • 快速适应
    • PEFT使得模型能够快速适应新任务,这对于需要快速部署模型的应用场景尤为重要。

Timeline

Additive approach:

  • Adapter
  • LoRA

Prompt-based approach:

  • P-Tuning
  • Prefix Tuning

实现方法

Adapter

Adapter - architecture.png

Adapter模块:对每个任务,仅添加少量训练参数

方法

  1. 在原神经网络中,插入新的Adapter Layer
    1. 新的Adapter中的参数初始值,随机生成
    2. 原网络中的参数保持不变

特点

  1. parameter数量少
    1. 相比较于原网络,adapter module很小 –> 意味着:虽然任务的增加,模型大小增长相对缓慢
  2. A near-identity initialisation
    1. Near-identity有助于训练的稳定性
    2. (如果adapter参数的初始值改变)
      1. ......远离identity function,模型无法训练
      2. ......接近0,新模型和原模型无变化(因为:Adapter Layer中存在residual connection)

细节处理方法

Q: To limit the number of parameters
  • Authors proposed a bottleneck architecture(如图,adapter layer,两头大,中间小)
    • First, project the original d-dimensional features into a smaller dimension, m.
    • Second, apply a nonlinearity
    • Final, project back to d dimensions
Trade-off (between performance and parameter efficiency)

Adapter大小于parameter efficiency相关:
更小的adapters添加的parameters更少,代价是performance⬇️


LoRA (Low-Rank Adaptation)

LoRA - architecture.png

原理(线性代数)

当adapting to特定任务时,预训练的LM具有低的"内在维度",并且即使随机投影到一个更小的子空间,仍然可以高效学习。
受此启发,LoRA作者假设:在adaptation过程中,权重矩阵的更新同样具有低的“内在秩”。

Equation

For a pre-trained weight matrix

where , , and rank

方法

  1. 训练期间,
    1. 冻结原模型的 weights ,不对其进行梯度更新
    2. 中包含可训练的参数
  2. 相比较传统fine-tune对整个模型的参数进行back-propagation来计算 ,LoRA用2个低秩 (Low Rank) 的 matrices 来替代
  3. 初始化
    1. –> 正态分布 (Gaussian initialisation)
    2. –> 0
    3. 训练开始时, 的值为 0
  4. 都与相同的input进行相乘,它们各自的输出向量再相加求和
    1. 传统:
    2. LoRA:

特点

  1. A Generalisation of Full Fine-tuning
    1. 将 LoRA 应用于所有权重矩阵时,我们通过将 LoRA 的秩 r 设置为预训练权重矩阵的秩,大致恢复了 Full Fine-tuning 的表达能力
    2. 换句话说:随着我们增加可训练参数的数量,训练 LoRA 大致上收敛于训练原始模型
      1. 然而,基于 Adapter 的方法收敛于 MLP
      2. 基于 Prefix-Tuning 的方法收敛于一个不能处理长序列的模型
  2. No Additional Inference Latency
    1. 部署在生产环境时,我们可以显式地计算并存储 ,并像往常一样执行推理
  3. LoRA 支持高效切换下游任务
    1. 通过:减去 中当前 然后添加一个新任务的 (该操作快速且memory占用低)
  4. LoRA 提高了训练的效率,降低了硬件要求(减少 memory 和 storage 的使用量
  5. LoRA 简易的线性设计,支持在部署时合并 trainable matrices 和 frozen weights
  6. LoRA 与其它的PEFT方法无冲突,可以结合使用(如:prefix-tuning)

缺点

如果选择将 A 和 B 吸收进 W 以消除额外的推理延迟,那么在单个前向传播中批量处理具有不同 A 和 B 的不同任务就不那么直接了
在延迟问题不重要的场景,可以选择:不 merge 权重,并动态选择 batch 中每个input sample 对应的 LoRA 模块。

Research Gap Filled by LoRA

Adapter Layer

  • Introduce inference latency, by extending model depth
  • 大模型依靠硬件的parallelism来保持low latency,但 adapter layers 必须sequentially处理数据
    Prefix Tuning
  • 保留一部分的序列长度用于adaptation,减少了模型在下游任务可用的 prompt 序列长度
  • Difficult to optimise. –> 模型性能的变化是non-monotonic